Powering a computer up and powering it down are basic operations of the computer. To that end, a computer typically has a power button on its housing (e.g., on its front panel) that a user can press to initiate a power-up or power-down operation of the computer. Besides the working state and the power-off states, many modern personal computers implement power-saving states defined in the Advanced Configuration and Power Interface (ACPI) specification. Depending on the power-saving scheme implemented in the computer, the power button may be used to bring the computer from the normal working (i.e., “on”) state to one of the power-saving states in which the computer is partially powered, such as the S1–S3 states of the ACPI, or to a power-down state, such as the S4 or S5 state of the ACPI.
The implementation of a sophisticated power-saving scheme with various power states, however, can turn the task of shutting off a personal computer (PC) into a complicated matter for non-technical users. A user needs to know the differences between the “standby/sleep,” “hibernate,” and true “off” power states, and to understand the tradeoffs between those different power states. For instance, the user has to decide whether to put the computer into the “off” state that will save data fully but will require a full reboot later, or to put the machine into the standby state that allows the computer to return to the “on” state quickly but does not preserve the state data of the machine if the power fails. In addition, the way a computer is shut down affects the way it responds when the user presses its power button. For instance, if the computer is in the “standby” state, it can quickly return to the “on” state (under 2 seconds), while if it is in the “off” state a long time will be required for the computer to boot back up to the “on” state (15–45 seconds). The different ways the computer may respond to the pressing of the same power button can create an inconsistent and confusing user experience. This is in sharp contrast to normal home appliances, such as a stereo system or a television, that have simple on/off states.
One possible way to implement a simple on/off model in a personal computer is to select an intermediate power-saving state, such as the S3 “standby” state of the ACPI specification, as the default “off” state. When the user presses the power button to turn the computer “off,” the computer system goes into the standby state instead of completely powering down (the ACPI S5 state). When the user presses the power button to turn the computer back on, the computer wakes from the standby state and resumes the working state (the ACPI S0 state). In addition to the simplified and consistent user experience, an important advantage of this simple power on/off model is that the computer can quickly transition from the standby state to the working state, thus providing an “instant-on” experience.
This simple on/off model, however, has a significant problem. A standby state is typically a volatile state in the sense that the system and user state data are not persistently stored (e.g., on the hard drive) when the system transitions from the working state into the standby state. If the computer is in a standby state and the AC power fails or is interrupted, or the computer is accidentally unplugged, the computer will lose its user and system state data and other data held in the RAM (e.g., open and unsaved documents and files) if they were not saved prior to the AC power loss. When the AC power returns, the computer will have to boot up and cannot return to the previous user state it was in prior to the AC power failure. As a result, the user has to re-start all of the applications that were previously running prior to the AC power failure.